今天繼續使用者登入的部分.
登入資料驗證當接收到表單送來的資訊之後,
首先我們要針對資料作驗證.
app/Http/Controllers/UserAuthController.php新增signInProcess方法
//處理登入資料
public function signInProcess()
{
    //接收輸入資料
    $input = request()->all();
    //驗證規則
    $rules = [
        //帳號(E-mail)
        'account' => [
            'required',
            'max:50',
            'email',
        ],
        //密碼
        'password' => [
            'required',
            'min:5',
        ],
    ];
    //驗證資料
    $validator = Validator::make($input, $rules);
    if($validator->fails())
    {
        //資料驗證錯誤
        return redirect('/user/auth/sign-up')
            ->withErrors($validator)
            ->withInput();
    }
}
當輸入不符合規則的時候就會跳出錯誤訊息
從資料庫取得使用者資料檢查過表單輸入的格式之後,
就要去資料庫檢查看看有沒有這個使用者,
找到使用者之後,
再檢查看看密碼是否正確.
如果密碼正確,
就能完成登入的動作,
當密碼有錯時,
就需要告知使用者輸入的密碼有誤.
我們將signInProcess方法修改如下
//處理登入資料
public function signInProcess()
{
    //前面省略
    //取得使用者資料
    $User = User::where('account', $input['account'])->first();
    if(!$User)
    {
        //帳號錯誤回傳錯誤訊息
        $error_message = [
            'msg' => [
                '帳號輸入錯誤',
            ],
        ];
        return redirect('/user/auth/sign-in')
            ->withErrors($error_message)
            ->withInput();
    }
    //檢查密碼是否正確
    $is_password_correct = Hash::check($input['password'], $User->password);
    if(!$is_password_correct)
    {
        //密碼錯誤回傳錯誤訊息
        $error_message = [
            'msg' => [
                '密碼輸入錯誤',
            ],
        ];
        return redirect('/user/auth/sign-in')
            ->withErrors($error_message)
            ->withInput();
    }
}
如果找不到使用者帳號,
就會顯示帳號輸入錯誤,
如果帳號正確但是密碼錯誤,
就會顯示密碼輸入錯誤.
取得Collection資料我們使用ORM的方式,
取得的是Illuminate\Support\Collection;物件陣列或單一物件,
當使用first的時候,
如果從資料庫找不到資料就會回傳null,
當我們要取得$User底下的account欄位時,
我們可以用$User->account來取得,
其他欄位也是用同樣的方式,
能夠取得在繼承Model的物件中$fillable定義的所有欄位,
以及id、created_at和updated_at等欄位資料.
驗證密碼在這裡我們使用以下方法來驗證密碼
//檢查密碼是否正確
$is_password_correct = Hash::check($input['password'], $User->password);
因為密碼是經過加密,
而且這種加密方式每次結果可能會不同,
所以要透過特定的方法來做驗證,
當然Laravel已經幫我們寫好了,
我們只要使用Hash::check函式就能夠完成密碼驗證的動作了.